package com.example.userservice.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.example.common.domain.Result;
import com.example.common.domain.pojo.User;
import com.example.userservice.domain.vo.UserTokenVo;
import org.springframework.web.multipart.MultipartFile;

import java.security.NoSuchAlgorithmException;
import java.util.Map;

public interface AuthService extends IService<User> {

    //创建token返回map
    Map<String, String> AddToken(String id, String role);

    //  解析token(只包含id和role数据)
    UserTokenVo ParseTokenRole(String token);

    //退出
    boolean logOut(String id);

    //判断密码是否正确并且获取用户数据
    User PasToUser(String id, String MD5Password);

    //更新密码
    boolean updatePassword(String id, String MD5Password);

    boolean updateUser(User user);

    User getUserById(String id);

    //    -------------------------------------
// 发送登录验证码
    void sendLoginCode(String phone);

    // 验证登录验证码
    boolean verifyLoginCode(String phone, String code);

    // Old手机号验证码
    Result<Object> sendOldPhoneCode(String userId, String oldPhone);

    // Old修改手机号
    Result<Object> OldPhone(String userId, String oldPhone, String code);

    // 发送修改手机号验证码
    Result<Object> sendModifyPhoneCode(String userId, String newPhone);

    // 修改手机号
    Result<Object> modifyPhone(String userId, String newPhone, String code);

    // 忘记密码 - 发送重置密码验证码
    Result<Object> sendResetPasswordCode(String phone);

    // 忘记密码 - 验证验证码并重置密码
    Result<Object> resetPassword(String phone, String code, String newPassword) throws NoSuchAlgorithmException;

    User getPhone(String phone);

    //绑定手机号之发送验证码
    void getBingPhoneCode(String phone);

    //绑定手机号
    Result<Object> BingPhone(String id, String phone, String code);

    //更新头像
    Result<Object> updateAvatar(String userId, MultipartFile avatarFile) throws NoSuchAlgorithmException;

    //人脸登录
    Result<User> faceLogin(String id, MultipartFile image);


}
